# Q. What is this file?
# A. This file contains options which allow you to configure your multiworld experience while allowing
#    others to play how they want as well.
#
# Q. How do I use it?
# A. The options in this file are weighted. This means the higher number you assign to a value, the
#    more chances you have for that option to be chosen. For example, an option like this:
#
#    map_shuffle:
#      on: 5
#      off: 15
#
#    Means you have 5 chances for map shuffle to occur, and 15 chances for map shuffle to be turned
#    off.
#
# Q. I've never seen a file like this before. What characters am I allowed to use?
# A. This is a .yaml file. You are allowed to use most characters.
#    To test if your yaml is valid or not, you can use this website:
#        http://www.yamllint.com/
#    You can also verify that your Archipelago options are valid at this site:
#        https://archipelago.gg/check

# Your name in-game, limited to 16 characters.
#     {player} will be replaced with the player's slot number.
#     {PLAYER} will be replaced with the player's slot number, if that slot number is greater than 1.
#     {number} will be replaced with the counter value of the name.
#     {NUMBER} will be replaced with the counter value of the name, if the counter value is greater than 1.
name: Player{number}

# Used to describe your yaml. Useful if you have multiple files.
description: Default Keymaster's Keep Template

game: Keymaster's Keep
requires:
  version: 0.6.6 # Version of Archipelago required for this yaml to work as expected.
  game:
    Keymaster's Keep: 2.1.0 # Version of the world required for this yaml to work as expected.

Keymaster's Keep:
  ################
  # Game Options #
  ################
  progression_balancing:
    # A system that can move progression earlier, to try and prevent the player from getting stuck and bored early.
    # 
    # A lower setting means more getting stuck. A higher setting means less getting stuck.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 99
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-99: 0 # random value between 0 and 99
    disabled: 0 # equivalent to 0
    normal: 50 # equivalent to 50
    extreme: 0 # equivalent to 99

  accessibility:
    # Set rules for reachability of your items/locations.
    # 
    # **Full:** ensure everything can be reached and acquired.
    # 
    # **Minimal:** ensure what is needed to reach your goal can be acquired.
    full: 50
    minimal: 0

  game_selection_bag_size:
    # Determines the size of the bag from which the weighted games in 'game_selection' will be randomly selected.
    # 
    # 0: No bag will be used and games may appear multiple times unbounded.
    # 1: The bag will be filled with 1 of each game and will be drawn from randomly until it is empty, resulting in an even distribution of games. If the bag becomes empty, it will be refilled.
    # 2+: The bag will initially be filled with the chosen number of each game, resulting in a slightly less even distribution of games where the maximum number of each game is the chosen number. Subsequent fills will revert to an even distribution. Similar logic applies for all other bag sizes.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 5
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-5: 0 # random value between 0 and 5

  ################
  # Goal Options #
  ################
  goal:
    # Determines the victory condition.
    # 
    # Keymasters Challenge: Retrieve X artifacts of resolve to unlock the Keymaster's challenge chamber and beat the ultimate challenge
    # Magic Key Heist: Acquire X magic keys and escape the Keymaster's Keep
    # Area Domination: Acquire conquest medallions by completing all trials in X% of keep areas and escape the Keymaster's Keep
    keymasters_challenge: 50
    magic_key_heist: 0
    area_domination: 0

  artifacts_of_resolve_total:
    # Determines how many Artifacts of Resolve are in the item pool.
    # 
    # Only relevant if the selected goal is Keymaster's Challenge.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 3
    # Maximum value is 25
    5: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-3-25: 0 # random value between 3 and 25

  artifacts_of_resolve_required:
    # Determines how many Artifacts of Resolve are required to unlock the Keymaster's challenge room.
    # 
    # Only relevant if the selected goal is Keymaster's Challenge.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 25
    3: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-25: 0 # random value between 1 and 25

  magic_keys_required:
    # Determines how many Magic Keys are required before escaping the Keymaster's Keep.
    # 
    # Only relevant if the selected goal is Magic Key Heist.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 10
    # Maximum value is 50
    18: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-10-50: 0 # random value between 10 and 50

  conquest_medallions_percentage_required:
    # Determines the percentage of Conquest Medallions required before escaping the Keymaster's Keep. Completing all trials in a keep awards a Conquest Medallion.
    # 
    # Only relevant if the selected goal is Area Domination.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 100
    80: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-100: 0 # random value between 1 and 100

  ###########################
  # Keep Generation Options #
  ###########################
  keep_areas:
    # Determines how many areas are in the Keymaster's Keep.
    # 
    # Each area will contain a new set of trials and most will be locked by one or more keys.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 10
    # Maximum value is 100
    20: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-10-100: 0 # random value between 10 and 100

  magic_keys_total:
    # Determines how many Magic Keys are in the item pool.
    # 
    # The keys in that pool will be used to generate the lock combinations for areas in the Keymaster's Keep. They will
    # also act as the amount of available keys to the player in the Magic Key Heist goal.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 10
    # Maximum value is 50
    30: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-10-50: 0 # random value between 10 and 50

  unlocked_areas:
    # Determines how many areas are unlocked at the start of the game.
    # 
    # The remaining areas will be locked by one or more keys.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 5
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-5: 0 # random value between 1 and 5

  lock_magic_keys_minimum:
    # Determines the minimum amount of Magic Keys that could be required to unlock an area.
    # 
    # The amount of keys required to unlock an area will be a random number between this value and the maximum. Note that
    # this option will be ignored for the first few areas to ensure the game is completable.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 5
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-5: 0 # random value between 1 and 5

  lock_magic_keys_maximum:
    # Determines the maximum amount of Magic Keys that could be required to unlock an area.
    # 
    # The amount of keys required to unlock an area will be a random number between the minimum and this value. Note that
    # this option will be ignored for the first few areas to ensure the game is completable.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 5
    3: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-5: 0 # random value between 1 and 5

  area_trials_minimum:
    # Determines the minimum amount of trials that could be in an area.
    # 
    # The amount of trials in an area will be a random number between this value and the maximum, but might get adjusted
    # upwards to hold the item pool size.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 25
    3: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-25: 0 # random value between 1 and 25

  area_trials_maximum:
    # Determines the maximum amount of trials that could be in an area.
    # 
    # The amount of trials in an area will be a random number between the minimum and this value, but might get adjusted
    # upwards to hold the item pool size.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 25
    7: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-25: 0 # random value between 1 and 25

  shops_:
    # If true, keep areas will have a chance to be replaced by a shop that will sell a handful of items.
    # 
    # The presence of shops will add Unique Relics to the item pool, which will need to be found to purchase items.
    # 
    # Yes, the option is named "shops_". Thank you, ALTTP!
    'false': 50
    'true': 0

  shops_percentage_chance:
    # Determines the percentage chance of a shop overriding a keep area when shops are enabled.
    # 
    # A maximum of 10 shops can exist in the keep at once.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 5
    # Maximum value is 50
    20: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-5-50: 0 # random value between 5 and 50

  shop_items_minimum:
    # Determines the minimum amount of items that could be sold in a shop.
    # 
    # The amount of items sold in a shop will be a random number between this value and the maximum.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 5
    2: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-5: 0 # random value between 1 and 5

  shop_items_maximum:
    # Determines the maximum amount of items that could be sold in a shop.
    # 
    # The amount of items sold in a shop will be a random number between the minimum and this value.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 5
    5: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-5: 0 # random value between 1 and 5

  shop_items_progression_percentage_chance:
    # Determines the percentage chance of each item in a shop being a guaranteed progression item.
    # 
    # Since items are purchased with unique relics, it is recommended to set this value on the higher side. Each unique
    # relic will only be able to unlock a single item in the keep, so ideally, they are worth the trouble.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    100: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  shop_hints:
    # If true, upon discovering a shop, hints will be generated for the items sold in that shop.
    'false': 50
    'true': 0

  ######################################
  # Game / Objective Selection Options #
  ######################################
  include_adult_only_or_unrated_games:
    # Determines if adult only or unrated games should be considered for the game pool.
    # 
    # Can be a useful filter to adhere to the rules of certain communities.
    'false': 50
    'true': 0

  include_modern_console_games:
    # Determines if modern console games should be considered for the game pool.
    # 
    # Can be a useful filter to adhere to the rules of certain communities.
    'false': 0
    'true': 50

  include_difficult_objectives:
    # Determines if difficult objectives should be considered.
    # 
    # Enabling this option might yield objectives that some players will struggle or not be able to complete.
    # 
    # If enabled, you can still exclude specific games with the 'excluded_games_difficult_objectives' option.
    'false': 50
    'true': 0

  excluded_games_difficult_objectives:
    # When 'include_difficult_objectives' is enabled, this option allows you to still exclude specific games.
    # 
    # Only game names originally listed in 'game_selection' are accepted.
    # 
    # If a game specified here only offers difficult objectives, this option will have no effect for it.
    []

  include_time_consuming_objectives:
    # Determines if time-consuming objectives should be considered.
    # 
    # Enabling this option might yield objectives that take much longer to complete (i.e. more than 1 hour).
    # 
    # If enabled, you can still exclude specific games with the 'excluded_games_time_consuming_objectives' option.
    'false': 0
    'true': 50

  excluded_games_time_consuming_objectives:
    # When 'include_time_consuming_objectives' is enabled, this option allows you to still exclude specific games.
    # 
    # Only game names originally listed in 'game_selection' are accepted.
    # 
    # If a game specified here only offers time-consuming objectives, this option will have no effect for it.
    []

  hints_reveal_objectives:
    # Determines if Archipelago hints will provide information about a location's objective.
    # 
    # Enabling this option will potentially spoil the game for an area and the objective that needs to be completed.
    'false': 50
    'true': 0

  game_medley_mode:
    # If true, a percentage of keep areas will feature Game Medley as their game, with each trial sourced randomly from
    # a separate, dedicated pool of games.
    # 
    # Activating Game Medley Mode will disable optional game conditions for keep areas assigned to Game Medley.
    'false': 50
    'true': 0

  game_medley_percentage_chance:
    # Determines the percentage chance of a game medley being selected when Game Medley Mode is enabled.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 100
    100: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-100: 0 # random value between 1 and 100

  game_medley_game_selection:
    # Defines the game pool that will be used to generate Game Medley trials.
    # 
    # Only game names originally listed in 'game_selection' are accepted.
    # 
    # You are allowed to place games that already appear in other selection options here.
    # 
    # You are allowed to add the same game multiple times here. This will act as a weighted pool.
    # 
    # If this is left empty, all games from other selection options will be used as a default.
    []

  game_medley_game_selection_bag_size:
    # Determines the size of the bag from which the weighted games in 'game_medley_game_selection' will be randomly selected. For more information, see 'game_selection_bag_size'.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 5
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-5: 0 # random value between 0 and 5

  game_selection:
    # Defines the game pool to select from.
    # 
    # All supported games are listed. Remove the ones you don't own or want to play.
    # 
    # You are allowed to add the same game multiple times here. This will act as a weighted pool.
    ['Custom (META)', 'Game Backlog (META)']

  #################
  # Custom (META) #
  #################
  custom_objective_list:
    # A freeform list of custom objectives for Keymaster's Keep. The trials will sample directly from this list.
    ['Custom Challenge 1', 'Custom Challenge 2', '...']

  #######################
  # Game Backlog (META) #
  #######################
  game_backlog_game_selection:
    # Defines which games are in the player's backlog.
    # 
    # Replace the placeholders with values of your own choosing.
    ['Game 1', 'Game 2', '...']

  game_backlog_actions:
    # Defines the possible actions that could be required on a game in the backlog.
    # 
    # You can customize this list to your liking.
    ['TRY', 'FINISH', 'COMPLETE']

  ###########################
  # Item & Location Options #
  ###########################
  local_items:
    # Forces these items to be in their native world.
    []

  non_local_items:
    # Forces these items to be outside their native world.
    []

  start_inventory:
    # Start with the specified amount of these items. Example: "Bomb: 1"
    {}

  start_inventory_from_pool:
    # Start with the specified amount of these items and don't place them in the world. Example: "Bomb: 1"
    # 
    # The game decides what the replacement items will be.
    {}

  start_hints:
    # Start with these item's locations prefilled into the ``!hint`` command.
    []

  start_location_hints:
    # Start with these locations and their item prefilled into the ``!hint`` command.
    []

  exclude_locations:
    # Prevent these locations from having an important item.
    []

  priority_locations:
    # Prevent these locations from having an unimportant item.
    []

  item_links:
    # Share part of your item pool with other players.
    []

  plando_items:
    # Generic items plando.
    []
